 <?php
/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */

/**
 * Smarty {lang} function plugin
 *
 * Type:     function<br>
 * Name:     lang<br>
 * Date:     Junho 13, 2010<br>
 * Purpose:  return languagem<br>
 * Input:
 *         - idioma = idioma (optional)
 *         - valor = valor do array
 *         - substituir =  string ou array contendo os valores a serem substituidos
 *         - por = string ou array com as substitutos.
 *
 * Examples:<br>
 * {lang idioma"pt_br" valor="teste" substituir="[>TESTE<]" por="teste Final"}
 * @author welton castro
 * @version  1.0
 * @param array
 * @param Smarty
 * @return string|null
 */
 
function smarty_function_lang($params, &$smarty)
{
    
    $CI =& get_instance(); //instanciando o ci
    $config =& get_config(); //configuracoes do CI    
    $idioma = (empty($params['idioma'])) ? $config['language'] : $params['idioma']; //se nao definido, pega o idioma padrao do config
    $CI->lang->load($idioma, $idioma); //carregando o idioma    
    $retval = $CI->lang->line($params['valor']); //pegando o valor da variavel de retorno
    
    if(isset($params['substituir'], $params['por'])){
        $lang_vars[$idioma]['substituir'] = $params['substituir'];
        $lang_vars[$idioma]['por'] = $params['por'];
        
        $lang_vars[$idioma]['separador'] = (isset($params['separador'])) ? $params['separador'] : ',';
        
        if(is_array($lang_vars[$idioma]['substituir'])) {
            $subs_array = $lang_vars[$idioma]['substituir'];
        } else {
            $subs_array = explode($lang_vars[$idioma]['separador'], $lang_vars[$idioma]['substituir']);
        }    
        
        if(is_array($lang_vars[$idioma]['por'])) {
            $por_array = $lang_vars[$idioma]['por'];
        } else {
            $por_array = explode($lang_vars[$idioma]['separador'], $lang_vars[$idioma]['por']);
        }
        $quant = count($subs_array);
        
        for ($i = 1; $i <= $quant; $i++){
            $retval = str_replace($subs_array[$i-1], $por_array[$i-1], $retval);    
        }    
    }
    return $retval;
}
?>